package com.sedric.sort;

import java.util.Arrays;
import java.util.Date;

public class SelectSort {

	public static Integer[] selectSort(Integer[] arr) {
		for(int i = 0; i < arr.length; i++) {
			for(int j = i + 1; j < arr.length; j++) {
				if (arr[i] > arr[j]) {
					CommonUtils.swap(arr, i, j);
				}
			}
		}
		return arr;
	}

	public static Integer[] advancedSelectSort(Integer[] arr) {
		for(int i = 0; i < arr.length; i++) {
			int minIndex = i;
			int minValue = arr[i];
			for(int j = i + 1; j < arr.length; j++) {
				if (minValue > arr[j]) {
					minIndex = j;
					minValue = arr[j];
				}
			}
			if (i != minIndex) {
				CommonUtils.swap(arr, i, minIndex);
			}
		}
		return arr;
	}

	public static void main(String[] args) {
		Integer[] arr = CommonUtils.generatorRandomIntegerArray(10000);

		Integer[] arr2 = Arrays.copyOf(arr, arr.length);

		// CommonUtils.printArray(arr);
		Long time1 = new Date().getTime();
		selectSort(arr);
		Long time2 = new Date().getTime();
		// CommonUtils.printArray(arr);

		// CommonUtils.printArray(arr2);
		Long time3 = new Date().getTime();
		advancedSelectSort(arr2);
		Long time4 = new Date().getTime();
		// CommonUtils.printArray(arr2);

		System.out.println(time2 - time1);
		System.out.println(time4 - time3);
	}
}
